An SSD storage controller manages both stored data and data to be stored in SSD storage, such as non-volatile memory, and can process read/write requests from a host computer. The host computer can issue read and write commands to the SSD storage controller to read data from or write data to the SSD storage. Knowledge about the type of data to be stored in the SSD storage can help the SSD controller improve the lifetime and the performance of the SSD storage. For example, by storing frequently-updated data in the same erase block in NAND flash and separately from infrequently-updated data, overhead associated with write amplification and garbage collection in the SSD device can be reduced. Therefore, it is desirable for SSD controllers to classify the data based on their characteristics, e.g., frequency of updates. After characterizing the data, the SSD storage controller can store the data with similar characteristics in the same erase block.
Prior art methods for classifying data utilize only limited information about the data. Based on this limited information, the SSD storage controller cannot accurately determine various characteristics of data, including data type and data activity. A file system driver implemented in a host computer can have information about the data to be stored in the SSD storage, but such information is not utilized by the storage controller in prior art methods.